The operating system of most computers provides an administration tool or a system administration manager for invoking and performing system management tasks. The hardware of a computer system, the various facilities included within the operating system, such as the file system facility, the print spooling facility, and the networking facility, as well as the operating system itself must all be managed. This predicament means that computer systems require some involvement by a human user or a manager of the computer system for such operations as specifying certain configuration parameters, monitoring ongoing activity, or troubleshooting some problem that has arisen. These management or administration tasks can be performed manually in many operating systems via direct manipulation of configuration files or direct invocation of specific administration utility programs. But in most modern operating systems, an easy to use, interactive software program is typically provided that hides the details of the file formats and the utility program syntax, while providing a higher level presentation for the user. This program, hereinafter referred to as the system administration manager (SAM), performs the query tasks on behalf of the user and then displays the discovered configuration and status information to the user in an easily manipulated format. The SAM also performs configuration or status change tasks on behalf of the user, and thus, provides an easy mechanism or interface for specifying the details of the task to be performed.
The query tasks retrieve information about the current configuration and state of the system or facility being managed. Configuration change tasks actually make changes to the configuration or state of the system or facility. These tasks are implemented as either separate utility programs (referred to in the UNIX industry as "commands") that are invoked by a command task manager or as a collection of functions contained in a shared library that are called by a function task manager. In addition, if the system or facility being managed is shared across multiple computer systems, some of these tasks must be performed on one or more of these computer systems simultaneously. This kind of distributed task would be performed by a remote task execution manager which communicates the task to be performed, with its associated parameters, to either a command task manager or a function task manager running on each of the other computer systems as appropriate.
In prior art implementations of the command task manager and function task manager on a single computer system, each task manager has its own application programming interface (API), task description language, and data structures. In addition, the support for such common features as error handling or event logging vary from manager to manager. These inconsistencies have led to numerous problems for developers of system management applications, four classes of which are discussed hereinafter.
A first and most obvious problem is programmer confusion. The different APIs and features have made the various task managers hard to learn, and therefore, have increased the training costs of software developers. This confusion is also the root cause of many programming errors.
A second class of problems is related to redundant implementations of similar functionality. This amounts to negligent use of the resources available to the SAM by requiring two sets of code to perform the same function implemented by separate facilities. Not only do these redundant implementations increase the initial cost of development, they also result in duplication in ongoing maintenance of the task managers, since similar changes or improvements have to be made in multiple places and in different ways.
A third class of problems is inconsistencies in the user interface from one task to another. The variation in task type invariably leads to variations in presentation to the user. This is undesirable since user interface inconsistencies are a leading cause of error and confusion for users.
And finally, the inconsistency between the command task manager and the function task manager have made it difficult to implement a remote task execution manager. Since the remote task execution manager must be able to communicate either with a command task manager or a function task manager on the remote computer system, depending upon the type of task being performed, any differences in the APIs of the two managers requires extra work in implementing the interface.
In the future, new technologies and protocols for both network and system management will lead to new ways to implement management tasks. Emerging standards will require new task execution managers that are uniquely configured to manage tasks implemented using those standards. Therefore, it is important to provide an extensible architecture for system management task execution to avoid any more proliferation of inconsistent APIs, description languages, and data structures.
Thus, a heretofore unaddressed need exists in the industry for a system and method that provides for all task execution management functions using a single interface and that is more extensible than existing implementations.